import request from '@/utils/request'

/**
 * 获取消息列表
 * @param {Object} params - 查询参数
 * @param {Number} params.targetId - 会话对象ID
 * @param {Number} params.targetType - 会话类型，1-单聊，2-群聊
 * @param {Number} params.messageId - 消息ID，用于分页
 * @param {Number} params.pageSize - 每页数量
 * @returns {Promise} 消息列表
 */
export function getMessagePage(params) {
  // 允许messageId为空值
  if (params.messageId === null) {
    delete params.messageId;
  }
  
  return request.get('/im/message/page', params);
}

/**
 * 发送消息
 * @param {Object} data - 消息内容
 * @param {Number} data.targetId - 接收者ID
 * @param {Number} data.targetType - 接收者类型，1-单聊，2-群聊
 * @param {Number} data.type - 消息类型，1-文本，2-图片，3-语音，4-视频，5-文件，6-位置，7-名片，8-礼物
 * @param {String} data.content - 消息内容
 * @param {Object} data.extra - 额外信息，根据消息类型不同而不同
 * @returns {Promise} 发送结果
 */
export function sendMessage(data) {
  return request.post('/im/message/send', data);
}

/**
 * 标记消息已读
 * @param {Object} data - 消息信息
 * @param {Number} data.messageId - 消息ID
 * @returns {Promise} 操作结果
 */
export function readMessage(data) {
  return request.put('/im/message/read', data);
}

/**
 * 撤回消息
 * @param {Object} data - 消息信息
 * @param {Number} data.messageId - 消息ID
 * @returns {Promise} 操作结果
 */
export function recallMessage(data) {
  return request.put('/im/message/recall', data);
}

/**
 * 删除消息
 * @param {Object} data - 消息信息
 * @param {Number} data.messageId - 消息ID
 * @returns {Promise} 操作结果
 */
export function deleteMessage(data) {
  return request.delete('/im/message/delete', data);
}

/**
 * 批量删除消息(清空会话)
 * @param {Object} data - 会话信息
 * @param {Number} data.targetId - 目标ID
 * @param {Number} data.targetType - 目标类型，1-单聊，2-群聊
 * @returns {Promise} 操作结果
 */
export function deleteAllMessages(data) {
  return request.delete('/im/message/delete-all', data);
} 